问题
Java Native Interface(JNI)允许Java应用程序调用本地方法,所谓本地方法是指用c或者c++编写的特殊方法,本地方法在本地语言中可以执行任意的计算任务,并返回到Java程序设计语言中。使用本地方法来访问特定于平台的机制是合法的,但是随着Java平台的不断成熟,它提供了越来越多以前只有在宿主平台上才拥有的特性。那么,本地方法是否应该像Java方法一样方便使用,有哪些注意事项?
答案
- 使用本地方法来提供性能的做法是不值得提倡的,在早期的发型版本中,这样的做法往往是很有必要,但是JVM实现变得越来越快,对于大多数任务,现在即使是不使用本地方法也能获得很好的性能;
- 本地方法不是安全的,并且依赖于平台的具体实现,编写的方法不再是可自由移植的;
- 程序更难调试,进入和退出本地方法都需要巨大性能消耗,如果仅仅是实现简单的逻辑,使用本地方法就是得不偿失的;
结论
极少数的情况会需要使用本地方法来提高性能,如果必须要使用本地方法来访问底层资源,需要全面的进行测试。**使用本地方法来提高性能的做法是不被建议使用的。